//
//import java.util.Iterator;
//import java.util.Set;
//
//import soot.MethodOrMethodContext;
//import soot.Scene;
//import soot.SootMethod;
//import soot.Unit;
//import soot.Value;
//import soot.jimple.IntConstant;
//import soot.jimple.InvokeExpr;
//import soot.jimple.Stmt;
//
//package soot.we.android.resource;
//
//import java.util.HashSet;
//import java.util.Iterator;
//import java.util.Set;
//
//import soot.MethodOrMethodContext;
//import soot.Scene;
//import soot.SootMethod;
//import soot.Unit;
//import soot.Value;
//import soot.jimple.IntConstant;
//import soot.jimple.InvokeExpr;
//import soot.jimple.Stmt;
//
//public class LayoutFileParser {
//	private final String packageName;
//	private final ARSCFileParser resParser;
//	public LayoutFileParser(String packageName, ARSCFileParser resParser) {
//		this.packageName = packageName;
//		this.resParser = resParser;
//	}
//	/**
//	 * Finds the mappings between classes and their respective layout files
//	 */
//	private void findClassLayoutMappings() {
//		Iterator<MethodOrMethodContext> rmIterator = Scene.v().getReachableMethods().listener();
//		while (rmIterator.hasNext()) {
//			SootMethod sm = rmIterator.next().method();
//			if (!sm.isConcrete())
//				continue;
//			for (Unit u : sm.retrieveActiveBody().getUnits())
//				if (u instanceof Stmt) {
//					Stmt stmt = (Stmt) u;
//					if (stmt.containsInvokeExpr()) {
//						InvokeExpr inv = stmt.getInvokeExpr();
//						if (inv.getMethod().getName().equals("setContentView")
//								&& inv.getMethod().getDeclaringClass().getName().equals("android.app.Activity")) {
//							for (Value val : inv.getArgs())
//								if (val instanceof IntConstant) {
//									IntConstant constVal = (IntConstant) val;
//									if (this.layoutClasses.containsKey(sm.getDeclaringClass()))
//										this.layoutClasses.get(sm.getDeclaringClass()).add(constVal.value);
//									else {
//										Set<Integer> layoutIDs = new HashSet<Integer>();
//										layoutIDs.add(constVal.value);
//										this.layoutClasses.put(sm.getDeclaringClass(), layoutIDs);
//									}
//								}
//						}
//					}
//				}
//		}
//	}
//}
//
///**
//	 * Finds the mappings between classes and their respective layout files
//	 */
//	public  static void findClassLayoutMappings() {
//		Iterator<MethodOrMethodContext> rmIterator = Scene.v().getReachableMethods().listener();
//		while (rmIterator.hasNext()) {
//			SootMethod sm = rmIterator.next().method();
//			if (!sm.isConcrete())
//				continue;
//			for (Unit u : sm.retrieveActiveBody().getUnits())
//				if (u instanceof Stmt) {
//					Stmt stmt = (Stmt) u;
//					if (stmt.containsInvokeExpr()) {
//						InvokeExpr inv = stmt.getInvokeExpr();
//						if (inv.getMethod().getName().equals("setContentView")
//								&& inv.getMethod().getDeclaringClass().getName().equals("android.app.Activity")) {
//							for (Value val : inv.getArgs())
//								if (val instanceof IntConstant) {
//									IntConstant constVal = (IntConstant) val;
//									if (layoutClasses.containsKey(sm.getDeclaringClass()))
//										layoutClasses.get(sm.getDeclaringClass()).add(constVal.value);
//									else {
//										Set<Integer> layoutIDs = new HashSet<Integer>();
//										layoutIDs.add(constVal.value);
//										layoutClasses.put(sm.getDeclaringClass(), layoutIDs);
//									}
//								}
//						}
//					}
//				}
//		}
//	}
